"""
序列之元组介绍
"""

# 1. 元组的声明1
_ = ()
print(type(_))

# 2. 元组的声明2
t = tuple()
print(type(t))

# 3. 元组声明并初始化1。注意：列表用的是[] ，元组用的是()
_1 = (1, 2, 3, 4, 5, '4343434', [])
print(type(_1))
print(_1)

# 4. 元组声明并初始化2
tuple1 = tuple([1, 2, 3, 4, 5, '4343434', []])
print(type(tuple1))
print(tuple1)

# 5. 如果是以()直接创建只有一个元素的元组，一定要以逗号”,“结尾，否则表示的是单个元素值。而列表不是必须以”,“
tuple2 = tuple('1', )
print(type(tuple2))
print(tuple2)
_2 = ('1',)
print(type(_2))
print(_2)
tuple3 = tuple('1')
print(type(tuple3))
print(tuple3)
# 如下将是一个字符串
s = ('1')
print(type(s))
print(s)
# 如下将是一个整型
i = (1)
print(type(i))
print(i)

# 6. 序列的相关操作。发现只有count 和 index。说明元组不可变。但是速度特别快
print(dir(tuple))
_3 = (1, 2, 3, 4, 2, 3, 4, 5, '4343434', [])
# index
print(_3.index(2))
print(_3.index(2, 3))
# 切片
t1 = _3[1:3]
print(t1)
t2 = _3[::2]
print(t2)
# 因为元组是不可变对象，所以使用如下方法将报错
# _3[1] = 333
# + 连接操作
_5 = (1, 2, 3, 4)
_6 = (2, 3, 4, 5, '4343434', [])
_7 = _5 + _6
print(_7)
_8 = _5 * 3
print(_8)

# 7. 通过列表来实现元组内容的修改。但是变量的对象发生了改变，内存地址不同了
_4 = (1, 2, 3, 4, 2, 3, 4, 5, '4343434', [])
print(id(_4))
l = list(_4)
l[1] = 333
_4 = tuple(l)
print(id(_4))
print(_4)
